package jnpf.util;

import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import jnpf.entity.ThemeMangeEntity;
import jnpf.entity.ThemeTreeEntity;
import jnpf.model.znm.theme.tree.TreeDragDTO;
import jnpf.model.znm.theme.tree.TreeInSql;
import jnpf.model.znm.theme.tree.TreeVO;

import java.util.ArrayList;
import java.util.List;

/**
 * 用于元析立方的工具类
 */
public class ZmnUtil {

    /**
     * 表格插入的排序值计算
     */
//    public static Integer calculateNewSort(List<ThemeTreeEntity> siblings, TreeDragDTO dragData) {
//        // 获取目标节点的兄弟节点(已按sort排序)
//
//        // 查找目标节点位置
//        int targetIndex = -1;
//        for (int i = 0; i < siblings.size(); i++) {
//            if (siblings.get(i).getId().equals(dragData.getTargetId())) {
//                targetIndex = i;
//                break;
//            }
//        }
//
//        if (targetIndex == -1) {
//            return 0; // 默认值
//        }
//
//        if ("after".equals(dragData.getPosition())) {
//            // 拖拽到前面
//            if (targetIndex == 0) {
//                // 如果是第一个节点，则设置为当前第一个节点sort值减1
//                return siblings.get(0).getSort() - 1;
//            } else {
//                // 取前一个节点和当前节点的中间值
//                int prevSort = siblings.get(targetIndex - 1).getSort();
//                int currentSort = siblings.get(targetIndex).getSort();
//                return calculateMiddleValue(prevSort, currentSort);
//            }
//        } else {
//            // 拖拽到后面
//            if (targetIndex == siblings.size() - 1) {
//                // 如果是最后一个节点，则设置为当前最后一个节点sort值加1
//                Integer sort = siblings.get(targetIndex).getSort();
//                if(sort!=null){
//                    return sort + 1;
//                }else{
//                    return 1;
//                }
//            } else {
//                // 取当前节点和后一个节点的中间值
//                int currentSort = siblings.get(targetIndex).getSort();
//                int nextSort = siblings.get(targetIndex + 1).getSort();
//                return calculateMiddleValue(currentSort, nextSort);
//            }
//        }
//    }
    /**
     * 表格插入的排序值计算，计算两个排序值之间的中间值
     */
    public static int calculateMiddleValue(int a, int b) {
        if (a == b) {
            // 如果两个值相同，返回a-1
            return a - 1;
        } else if (a < b - 1) {
            // 如果差值大于1，直接取中间值
            return (a + b) / 2;
        } else {
            // 如果差值太小，需要重新分配排序值
            return a + (b - a) / 2;
        }
    }

    public static String convertThemeTreeToJson(List<TreeVO> themeTree) {
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            return objectMapper.writeValueAsString(themeTree);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 解析JSON字符串为TreeVO列表
     * @param json
     * @return
     */
    public static List<TreeVO> convertJsonToThemeTree(String json) {
        return JSON.parseArray(json, TreeVO.class);
    }


    /**
     * 将字符串转换为JSON列表文本
     * @param str 输入字符串
     * @return JSON列表文本
     */
    public static String stringToJsonList(String str) {
        List<String> list = new ArrayList<>();
        list.add(str);
        return JsonUtil.getListToJsonArray(list).toJSONString();
    }

    /**
     * 将字符串列表转换为JSON列表文本
     * @param list 输入字符串列表
     * @return JSON列表文本
     */
    public static String listToJsonList(List<String> list) {
        return JsonUtil.getListToJsonArray(list).toJSONString();
    }

}
